#ifndef PERMUTATIONSUNITTESTS_H
#define PERMUTATIONSUNITTESTS_H

#include "stdafx.h"
#include "TestUtils.h"
#include "Permutation.h"
#include <cstdlib>

// check the intersection between 2 simple permutations arrays
	TestUtils::TestResult CheckCountIntersection1();

// check the intersection between 2 permutations arrays
	TestUtils::TestResult CheckCountIntersection2();

// check transposing and returning a matrix
	TestUtils::TestResult CheckTranspose();

// check next permutaion
	TestUtils::TestResult CheckNextPermutaion();

// check Chain::IsLegalToAdd 
	TestUtils::TestResult CheckAddToChain();

// check Permutations :: Fill
	TestUtils::TestResult CheckPermutationsFill();
	TestUtils::TestResult VerifyRelatedPermutationsAreSame(Permutation &perm1, Permutation &perm2);

//  Check fill and chaings
	TestUtils::TestResult CheckPermutationsChains();

// Checks loading from an XML file
	TestUtils::TestResult CheckLoad();

	void RunTests();

#endif
